package in.rob.client.dialog;
import in.lib.Constants;
import in.lib.annotation.InjectView;
import in.lib.handler.dialogs.DeletePrivateMessageDialogResponseHandler;
import in.lib.manager.APIManager;
import in.lib.utils.Views;
import in.lib.view.LinkifiedTextView;
import in.model.PrivateMessage;
import in.rob.client.MainApplication;
import in.rob.client.R;
import in.rob.client.dialog.base.PostDialog;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.TextView;
import com.nostra13.universalimageloader.core.ImageLoader;
/**
* Dialog used to delete a post
*
* Possible extra arguments:
* <ul>
* <li><b>{@linkplain Constants Constants.EXTRA_MESSAGE}</b>: The {@link PrivateMessage} object to delete</li>
* </ul>
*/
public class DeleteMessageDialog extends PostDialog
{
@InjectView(R.id.time) public TextView time;
@InjectView(R.id.post_title) public TextView title;
@InjectView(R.id.sub_title) public TextView subtitle;
private PrivateMessage mRelatedMessage;
private int mNotificationId;
@Override protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setTitle(R.string.confirm);
mNotificationId = (int)System.currentTimeMillis();
getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
}
@Override protected void initDialog()
{
Views.inject(this);
ImageLoader.getInstance().displayImage(mRelatedMessage.getPoster().getAvatarUrl() + "?avatar=1&id=" + mRelatedMessage.getPoster().getId(), ((ImageView)findViewById(R.id.avatar)), MainApplication.getAvatarImageOptions());
((LinkifiedTextView)getInput()).setText(mRelatedMessage.getFormattedText());
((LinkifiedTextView)getInput()).setLinkMovementMethod(null);
time.setText(mRelatedMessage.getDateStr());
title.setText(mRelatedMessage.getPoster().getFormattedMentionName()[0]);
subtitle.setText(mRelatedMessage.getPoster().getFormattedMentionName()[1]);
}
@Override public void retrieveArguments(Bundle instances)
{
super.retrieveArguments(instances);
if (instances.containsKey(Constants.EXTRA_MESSAGE))
{
mRelatedMessage = (PrivateMessage)instances.getParcelable(Constants.EXTRA_MESSAGE);
}
}
@Override protected void onSaveInstanceState(Bundle outState)
{
outState.putParcelable(Constants.EXTRA_MESSAGE, mRelatedMessage);
super.onSaveInstanceState(outState);
}
@Override public void positiveControl()
{
Intent mFailIntent = new Intent(getApplicationContext(), DeleteMessageDialog.class);
mFailIntent.putExtra(Constants.EXTRA_MESSAGE, mRelatedMessage);
sendNotification(getString(R.string.deleting_message_title), getString(R.string.deleting_message));
APIManager.getInstance().deleteMessage(mRelatedMessage.getChannelId(), mRelatedMessage.getId(), new DeletePrivateMessageDialogResponseHandler(this, mFailIntent, mNotificationId));
}
public void sendNotification(String title, String content)
{
NotificationManager mNotificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.notif, title, System.currentTimeMillis());
CharSequence contentTitle = getString(R.string.app_name);
CharSequence contentText = content;
Intent notificationIntent = new Intent();
PendingIntent contentIntent = PendingIntent.getActivity(getContext(), 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT);
//notification.flags |= Notification.FLAG_ONGOING_EVENT;
notification.setLatestEventInfo(getContext(), contentTitle, contentText, contentIntent);
mNotificationManager.notify(mNotificationId, notification);
}
@Override public int getContentView()
{
return R.layout.delete_post_dialog;
}
}